package org.gap.wizards.utils;

import java.awt.Dimension;
import java.awt.Point;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.gap.jseed.SeedContainer;

public interface Persistence {

	void set(String key, String value);
	String getString(String key);

	void set(String key, boolean value);
	boolean getBoolean(String key);

	void set(String key, int value);
	int getInt(String key);

	void set(String key, Point point);
	Point getPoint(String string);

	void set(String key, Dimension dimensions);
	Dimension getDimension(String key);

	void set(String key, String[] strings);
	String[] getStrings(String key);

	void set(String key, Class<?> klass);
	Object getClass(String key);

	void set(String key, Point[] points);
	Point[] getPoints(String string);

	void set(String key, Collection<String> keySet);
	
	void set(String eachMapId, Map<?, ?> transitionsFrom);
	Map<?, ?> getMap(String each);

	void set(String key, List<? extends Persistable> toPersist);
	<T extends Persistable> List<T> getList(String building);

	void set(String key, Enum<?> direction);
	<T extends Enum<T>> T getEnum(String string, Class<T> class1);

	void beginSection(String name);
	void endSection();

	void save();
	void setSeedContainer(SeedContainer serviceStoreContainer);
	Persistence newPersister(String persistenceName) throws IOException;
}
